(1) Field of the Invention
This invention relates to a method for defining business functionality in an electronic form, and more particularly relates to an object oriented based methodology for modeling business functionality so as to generate hardware and software specific code therefrom for implementation in a web based computing environment.
(2) Description of the Related Art
Current computer programming techniques include the use of Object-Oriented Programming (“OOP”). OOP is characterized by a reliance on reusable, self-contained, callable program code modules known in the art as ‘objects’. An object is a run-time instance of an object class. Specifically, the object class forms the definitional structure of the object. During execution, data storage space is allocated for each object where the space required is defined by the object class. This process of run time allocation is referred to as instantiation. As such, the object class acts as a template that defines the behavior of a group of similar objects. An object, instantiated from its corresponding object class, contains all of the attributes, methods, and messaging capabilities required to form tasks logically required by an application.
Each object is designed to accomplish a predefined set of operations through ‘methods’ and associated data. Associated data most often take the form of static variable definitions for storing attribute data associated with an object. Attribute data may record the relationship between the object and one or more other objects. Methods comprise programmed tasks for the object to perform when invoked. A method invocation usually occurs as a result of a message sent to an object by another object. The message identifies the method, or operation, that is to be performed. In addition, an object's methods may call upon methods included within the object's own definition.
OOP is a modular approach to programming wherein functionality is grouped by object class and implemented through the instantiation of objects. Such a modular approach makes software development more efficient and reliable through the use and reuse of individual, tested objects. Once coded and tested, object classes may be ported to other applications and compiled. One example of OOP computer languages include the C++ language developed by the AT&T Bell Laboratories of Murray Hills, N.J. as an extension of the non-OOP C programming language.
While an object's attribute value can indicate a logical state of the object and an object's methods contain the universe of functions which may be invoked pursuant to the operation of the object, to the best of the Applicant's knowledge there exists nothing in the structure of existing OOP objects for binding an object's state attribute variables to its methods. In addition, as presently conducted, methods which function as rules for evaluating or changing the value of an attribute are defined at the object class level and, as such, are not tied to individual instances of the class. An example of a limitation with the present state of the art is that while an object class may specify a method to compute a discounted price in general, it cannot specify a different rule for computing the discount price if the instance of the object class corresponds to a particular store chain.
The lack of a methodology by which OOP can bind, within the structure of an object, an object's state to its methods is a drawback in the art. A primary shortcoming of the present art arises from the proliferation of internet based applications. As used herein, “internet” refers to the global network of computers constantly connected to each other using standardized communications protocols, specifically TCP/IP. The internet is referred to as a “stateless” environment. That is, each client request sent from web browsers to application servers constitutes a singular communication session between client and server. As a result, communications are perceived by the server to be unique events and not part of a continuous dialogue. For example, a user interacting through a web browser to order a book over the internet may be guided through several windows to enter book selections and credit card information. Upon submitting each web page, the information entered by the user is submitted to the web server. However, the server does not automatically know if this is the first communication with the user, one of a series of interactions required to accomplish a task, or which communication in the series is presently being executed. To address this problem, there have been developed various methodologies to allow web servers to ascertain the context, or state, of the client request.
One methodology as disclosed in Microsoft technical paper entitled “ASP and Web Session Management” by Micheal P. Levy, Apr. 2, 1997, involves the assignment of a unique session identifier to a client upon login. This identifier is passed back and forth in what is commonly called a cookie. Cookies are discreet packets of information appended to client and server communications that are stored and sent back and forth. Once the unique identifier is received, the server can query a centralized database to ascertain where the client is in the context of completing the transaction. Because many servers may store and retrieve data from a centralized database, or from a plurality of databases, the potential for data bottlenecks to arise increases with the number of client sessions. In addition, processing power is required to ascertain state information in this manner which could be better utilized.
As business applications become more dependent upon internet based architectures, the need to redevelop and distribute architecture components becomes more important as well. Traditional computer architecture design is characterized by development of code to run on predefined hardware platforms using predefined software running on a predefined operating system. Unfortunately, the long life cycles involved in developing and testing code are not compatible with the rapid rate at which differing hardware and software platforms come into and out of existence, and the dynamic nature of the business models which are presently being implemented, in particular for use on the internet.
OOP allows for the creation and utilization of object classes to perform the needs of business. However, when coded in an existing language, such as C++, these object classes are constrained in their ability to run on multiple platforms. In addition, it is resource intensive to make even the most minor change to existing code that is distributed across many platforms. As a result, it is presently necessary to spend a great deal of time defining the precise nature of business functionality prior to beginning the coding of an application. Reasons for this include the requirement to thoroughly test the interaction of tens of thousands of lines of codes which will be distributed across many platforms. Even the smallest change in any one component of any platform can have large, and often times unintended, effects on other components. However, because the life cycle of many projects devoted to creating computer applications to implement business functionality is several years in duration, the needs of the business upon delivery of the completed application often differ greatly from the original design specifications.
Unfortunately, there presently exists a very strong relationship between the high level business functionality to be implemented in computer code and the low level architected system created to perform such functionality. As a result, changes to the high level business model necessitate complex and costly revisions to the code. The availability of new hardware and software platforms not present at the outset of a project is virtually impossible to integrate midstream in the development process.
What is therefore needed, is a method for designing architected computer systems for carrying out business functionality that does not suffer from the limitations of the prior art.